package edu.ynu.se.xiecheng.achitectureclass.digitalagriculture.dao;

import edu.ynu.se.xiecheng.achitectureclass.digitalagriculture.entity.DeviceMonitorRecordEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;

import java.io.Serializable;
import java.util.List;

/**
 * 设备监控记录数据访问接口
 * 设计原则体现：
 * 1. 分层架构 - 作为DAO层，专注于数据访问
 * 2. 依赖倒置原则 - 通过接口定义规范，而非直接实现
 * 3. 接口隔离原则 - 继承必要的最小接口集
 */
public interface DeviceMonitorRecordDAO extends JpaRepository<DeviceMonitorRecordEntity,Long>, JpaSpecificationExecutor<DeviceMonitorRecordEntity>, Serializable {

    /**
     * 获取最新数据查询方法
     * 设计原则体现：
     * 1. 单一职责原则 - 方法功能单一，只负责查询最新记录
     * 2. 声明式查询 - 使用@Query注解实现SQL查询，关注点分离
     */
    @Query(nativeQuery = true, value = "SELECT * FROM device_monitor_record  dsr WHERE dsr.id IN(SELECT MAX(dssr.id) FROM device_monitor_record  dssr GROUP BY dssr.device_id);")
    public List<DeviceMonitorRecordEntity> getLastData();
}
